package com.example.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.*;

import java.util.Date;

import com.example.mybatis.entity.BaseEntity;

/**
 * 购物车表
 *
 * @author yyyyjinying 1020066395@qq.com
 * @since 1.0-SNAPSHOT 2025-05-22
 */
@Data
@EqualsAndHashCode(callSuper = false) // 在比较两个对象是否相等时，只比较当前类的属性，不考虑父类的属性；在生成哈希码时，也只基于当前类的属性
@TableName("zy_cart")
public class CartEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 购物车ID
     */
    @TableId
    private Long id;
    /**
     * 用户ID
     */
    private Long userId;
    /**
     * 商品类型：0=普通商品, 1=规格商品, 2=套餐商品
     */
    private Integer type;
    /**
     * 商品或套餐的主ID
     */
    private Long productId;
    /**
     * 规格组ID（用于规格商品）
     */
    private Long specGroupId;
    /**
     * 具体规格值（字符串格式，如 "颜色:红,型号:大" 或 JSON字符串）
     */
    private String specValues;
    /**
     * 套餐包含的商品组合（字符串格式，如 "[{\"item_id\":1,\"num\":1},{\"item_id\":2,\"num\":2}]"）
     */
    private String packageItems;
    /**
     * 购买数量（如果是套餐，表示整个套餐的数量）
     */
    private Integer quantity;

    @TableField(fill = FieldFill.INSERT)
    private Date createDate;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date updateDate;
}